﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using Sistema_Totem.Clases.Fabricas;
using Sistema_Totem.Clases;
using Sistema_Totem.Acceso_a_Datos.IDAOS;
using Sistema_Totem.Acceso_a_Datos.DAOS;
using Sistema_Totem.Acceso_a_Datos.FabricaDAOS;


namespace Sistema_Totem.Logica.Comandos.ComandoPlantilla
{
    /// <summary>
    /// comando final de agregar plantilla que arma el xml y luego llama al dao para guardarlo en base de datos
    /// </summary>
    public class ComandoAgregarPlantilla : Comando<Entidad>
    {
        private Entidad _plantilla;

        public ComandoAgregarPlantilla( Entidad plantilla) 
        {
            _plantilla = plantilla;;
        }

        public override Entidad Ejecutar()
        {
            String CuerpoXml = "<PLANTILLA><REFERENCIAS><CASODEUSO></CASODEUSO><REQUERIMIENTO></REQUERIMIENTO><PROPUESTA></PROPUESTA></REFERENCIAS>";
            
            for (int i = 0; i < (_plantilla as Plantilla).ListaSeccion.Count; i++) 
            {
                CuerpoXml += "<SECCION><TITULO>" + (_plantilla as Plantilla).ListaSeccion[i].Nombre + "</TITULO>";

                for (int j = 0; j < (_plantilla as Plantilla).ListaSeccion[i].ListaControl.Count; j++) 
                {
                    CuerpoXml += "<ELEMENTO><NOMBRE>" + (_plantilla as Plantilla).ListaSeccion[i].ListaControl[j].Nombre+"</NOMBRE>";
                    CuerpoXml += "<TIPO>" + (_plantilla as Plantilla).ListaSeccion[i].ListaControl[j].Tipo + "</TIPO>";
                    CuerpoXml += "<ESTADO>" + (_plantilla as Plantilla).ListaSeccion[i].ListaControl[j].Estado + "</ESTADO>";
                    CuerpoXml += "<CONTENIDO>" + (_plantilla as Plantilla).ListaSeccion[i].ListaControl[j].Contenido + "</CONTENIDO>";

                    for (int k = 0; k < (_plantilla as Plantilla).ListaSeccion[i].ListaControl[j].ListaComportamiento.Count; k++) 
                    {
                        CuerpoXml += "<VALIDACION>" + (_plantilla as Plantilla).ListaSeccion[i].ListaControl[j].ListaComportamiento[k].Nombre+ "</VALIDACION>";
                    }
                    CuerpoXml += "</ELEMENTO>";
                }
                CuerpoXml += "</SECCION>";
            }
            CuerpoXml += "</PLANTILLA>";

            iDAOPlantilla cone = FabricaDAOSQLServer.getInstacia().CrearDAOPlantilla();
            cone.AgregarPlantilla((_plantilla as Plantilla).Nombre.ToString(), (_plantilla as Plantilla).Descripcion.ToString(), CuerpoXml, (_plantilla as Plantilla).Tipo.ToString());

            return _plantilla;
        }
    }
}